✓ Verified
💻 Development
✓ Enhanced Data
Rate Limit Pro
Advanced rate limiting with tiered controls and quota management.
- Rating
- 4.7 (25 reviews)
- Downloads
- 1,809 downloads
- Version
- 1.0.0
Overview
Advanced rate limiting with tiered controls and quota management.
Complete Documentation
View Source →
Rate Limit Pro
Advanced rate limiting with multiple tiers and quota management.
Implementation
javascript
class RateLimiter {
constructor(options = {}) {
this.tiers = options.tiers || {
free: { requests: 10, window: 60000 }, // 10 req/min
basic: { requests: 100, window: 60000 },
pro: { requests: 1000, window: 60000 }
};
this.requests = new Map();
}
checkLimit(userId, tier = 'free') {
const tierConfig = this.tiers[tier];
if (!tierConfig) {
return { allowed: false, reason: 'invalid_tier' };
}
const now = Date.now();
const userRequests = this.requests.get(userId) || [];
// Remove old requests outside window
const validRequests = userRequests.filter(
timestamp => now - timestamp < tierConfig.window
);
// Check if under limit
if (validRequests.length >= tierConfig.requests) {
const oldestRequest = validRequests[0];
const resetIn = tierConfig.window - (now - oldestRequest);
return {
allowed: false,
reason: 'rate_limit_exceeded',
limit: tierConfig.requests,
remaining: 0,
resetIn: Math.ceil(resetIn / 1000)
};
}
// Add current request
validRequests.push(now);
this.requests.set(userId, validRequests);
return {
allowed: true,
limit: tierConfig.requests,
remaining: tierConfig.requests - validRequests.length,
resetIn: Math.ceil(tierConfig.window / 1000)
};
}
resetUser(userId) {
this.requests.delete(userId);
}
getStats(userId) {
const userRequests = this.requests.get(userId) || [];
return {
totalRequests: userRequests.length,
oldestRequest: userRequests[0] || null,
newestRequest: userRequests[userRequests.length - 1] || null
};
}
}
// Export for OpenClaw
module.exports = { RateLimiter };
Usage
javascript
const limiter = new skills.rateLimitPro.RateLimiter({
tiers: {
free: { requests: 10, window: 60000 },
pro: { requests: 1000, window: 60000 }
}
});
const result = limiter.checkLimit('user123', 'free');
if (result.allowed) {
// Process request
} else {
console.log(`Rate limit exceeded. Reset in ${result.resetIn}s`);
}
Configuration
json
{
"tiers": {
"free": { "requests": 10, "window": 60000 },
"basic": { "requests": 100, "window": 60000 },
"pro": { "requests": 1000, "window": 60000 }
}
}
Installation
Terminal bash
openclaw install rate-limit-pro
Copied!
💻Code Examples
example.js
class RateLimiter {
constructor(options = {}) {
this.tiers = options.tiers || {
free: { requests: 10, window: 60000 }, // 10 req/min
basic: { requests: 100, window: 60000 },
pro: { requests: 1000, window: 60000 }
};
this.requests = new Map();
}
checkLimit(userId, tier = 'free') {
const tierConfig = this.tiers[tier];
if (!tierConfig) {
return { allowed: false, reason: 'invalid_tier' };
}
const now = Date.now();
const userRequests = this.requests.get(userId) || [];
// Remove old requests outside window
const validRequests = userRequests.filter(
timestamp => now - timestamp < tierConfig.window
);
// Check if under limit
if (validRequests.length >= tierConfig.requests) {
const oldestRequest = validRequests[0];
const resetIn = tierConfig.window - (now - oldestRequest);
return {
allowed: false,
reason: 'rate_limit_exceeded',
limit: tierConfig.requests,
remaining: 0,
resetIn: Math.ceil(resetIn / 1000)
};
}
// Add current request
validRequests.push(now);
this.requests.set(userId, validRequests);
return {
allowed: true,
limit: tierConfig.requests,
remaining: tierConfig.requests - validRequests.length,
resetIn: Math.ceil(tierConfig.window / 1000)
};
}
resetUser(userId) {
this.requests.delete(userId);
}
getStats(userId) {
const userRequests = this.requests.get(userId) || [];
return {
totalRequests: userRequests.length,
oldestRequest: userRequests[0] || null,
newestRequest: userRequests[userRequests.length - 1] || null
};
}
}
// Export for OpenClaw
module.exports = { RateLimiter };example.js
const limiter = new skills.rateLimitPro.RateLimiter({
tiers: {
free: { requests: 10, window: 60000 },
pro: { requests: 1000, window: 60000 }
}
});
const result = limiter.checkLimit('user123', 'free');
if (result.allowed) {
// Process request
} else {
console.log(`Rate limit exceeded. Reset in ${result.resetIn}s`);
}example.json
{
"tiers": {
"free": { "requests": 10, "window": 60000 },
"basic": { "requests": 100, "window": 60000 },
"pro": { "requests": 1000, "window": 60000 }
}
}Tags
#coding_agents-and-ides
Quick Info
Category Development
Model Claude 3.5
Complexity Advanced
Author raghulpasupathi
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
Ready to Install?
Get started with this skill in seconds
openclaw install rate-limit-pro
Related Skills
✓ Verified
💻 Development
4claw
4claw — a moderated imageboard for AI agents.
🧠 Claude-Ready
)}
★ 4.4 (118)
↓ 4,990
v1.0.0
✓ Verified
💻 Development
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
🧠 Claude-Ready
)}
★ 4.3 (89)
↓ 4,621
v1.0.0
✓ Verified
💻 Development
Acestep Lyrics Transcription
Transcribe audio to timestamped lyrics using OpenAI Whisper or ElevenLabs Scribe API.
⚡ GPT-Optimized
)}
★ 3.8 (274)
↓ 17,648
v1.0.0
✓ Verified
💻 Development
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.
🧠 Claude-Ready
)}
★ 4.7 (88)
↓ 1,625
v1.0.0