Daemon Commands (nikd)
Thenikd daemon is the background service that executes background agent jobs. It provides a REST API for job management and handles job queuing, execution, and monitoring.
Installation
Commands Overview
nikd start
Start the background agent daemon with specified configuration.
Syntax:
| Option | Description | Default |
|---|---|---|
-p, --port <port> | API server port | 3000 |
--redis <url> | Redis connection URL | Local queue |
--max-concurrent <count> | Maximum concurrent jobs | 3 |
--workspace <path> | Workspace directory | Current directory |
--github-app-id <id> | GitHub App ID | - |
--github-private-key <path> | Path to GitHub App private key | - |
--github-installation-id <id> | GitHub App installation ID | - |
--github-webhook-secret <secret> | GitHub webhook secret | - |
- Default port is
3000 - Must be available and not in use
- Used for REST API and health checks
- Optional external Redis for job queue
- Format:
redis://[username:password@]host:port[/database] - Falls back to local in-memory queue if not specified
- Required for multi-instance deployments
- Enables automatic PR creation and management
- Requires GitHub App with appropriate permissions
- Private key must be accessible to daemon process
- Directory where jobs execute
- Must have read/write permissions
- Should have sufficient disk space for repositories
nikd status
Check the daemon status and health information.
Syntax:
--api-url <url>- API server URL (default:http://localhost:3000)
- Daemon running status
- API endpoint availability
- Uptime information
- Last health check timestamp
- Version information
0- Daemon is running and healthy1- Daemon is not running or unreachable
nikd logs
Stream daemon logs (placeholder for future implementation).
Syntax:
--api-url <url>- API server URL (default:http://localhost:3000)
- Shows connection information
- Notes that real-time logs require additional implementation
- Suggests checking daemon console output
- Real-time log streaming via WebSocket
- Log filtering and search capabilities
- Historical log access
Configuration
Environment Variables
The daemon supports configuration via environment variables:Configuration File
Create/etc/nikd/config.json or ~/.nikd/config.json:
API Endpoints
The daemon exposes a REST API for job management:Health Check
Job Management
Metrics
Deployment
Docker Deployment
Dockerfile:Kubernetes Deployment
deployment.yaml:Systemd Service
nikd.service:Monitoring
Health Monitoring
Basic health check:Prometheus Metrics
metrics endpoint:Troubleshooting
Common Issues
Daemon won’t start:Debug Mode
Enable debug logging:Log Analysis
Common log patterns:Security
Best Practices
-
Network Security:
- Run behind reverse proxy (nginx, traefik)
- Use HTTPS in production
- Restrict API access with firewall rules
-
Authentication:
- Use API keys for external access
- Implement JWT tokens for session management
- Rotate secrets regularly
-
Resource Isolation:
- Run jobs in containers or VMs
- Limit resource usage per job
- Implement proper cleanup
-
Data Protection:
- Encrypt sensitive configuration
- Use secrets management (Vault, K8s secrets)
- Audit log access